package main

import (
	"github.com/opentracing/opentracing-go"
	"github.com/uber/jaeger-client-go"
	jaegercfg "github.com/uber/jaeger-client-go/config"
	"time"
)

func main() {
	//配置jaeger客户端
	cfg := jaegercfg.Configuration{
		Sampler: &jaegercfg.SamplerConfig{
			Type:  jaeger.SamplerTypeConst, //指定采样器为常量采样器
			Param: 1,                       //采样率设置为1，表示采样100%的请求
		},
		Reporter: &jaegercfg.ReporterConfig{
			LogSpans:           true,             //是否将span日志记录到标准输出
			LocalAgentHostPort: "127.0.0.1:6831", //jaeger代理的地址和端口
		},
		ServiceName: "shop_service2", //服务名称
	}
	//我们创建一个新的链路
	tracer, closer, err := cfg.NewTracer(jaegercfg.Logger(jaeger.StdLogger))
	if err != nil {
		panic(err)
	}

	//设置全局链路
	opentracing.SetGlobalTracer(tracer)
	defer closer.Close()
	spanA := opentracing.StartSpan("funA") // 开始一个新的 span，表示一次操作
	time.Sleep(time.Millisecond * 500)
	defer spanA.Finish()
	spanB := opentracing.StartSpan("funB") // 开始一个新的 span，表示一次操作
	time.Sleep(time.Millisecond * 1000)
	defer spanB.Finish()
}
